package com.example.validatestudy.demos.packaging.other;

import com.example.validatestudy.demos.packaging.Bird;

/**
 * @auther: 王振方
 * @date: 2024 01 30 21 29
 * @description: 测试封装关键字的权限范围
 *  public >  protected > default > private
 *  非子类  + 不同包的子类       + 同包   + 类内部
 */
public class TestPackage extends Bird{

    /**
     * Java8之前
     * 接口中的方法全部是抽象方法，默认public abstract 修饰，也只能是public abstract修饰，public abstract可以省略
     *
     * Java8及之后
     * 接口中的方法有抽象方法（abstract），默认方法（default），静态方法（static）
     * 接口中所有方法的访问权限修饰符都是public，也只能是public，public 可以省略
     * @param args
     */
    public static void main(String[] args) {
        Car car = new Car();
        car.color = "白色";
        //car.start();
        car.test();
        car.run();

        Bird bird = new Bird();
        bird.fly();
        /**
         * protected在不同包时，可以由继承来访问protected方法而不能直接访问protected方法
         */
        //bird.sing();
        new TestPackage().sing();
    }
}
